<!DOCTYPE html>
<html lang="zh-cn">
<head>
  
  <meta name="viewport" content="width=device-width,initial-scale=1">
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
  <title>
理解 Git 的暂存区 |
穷折腾</title>
  <link rel="stylesheet" href="/static/css/style.css" />
  <link rel="stylesheet" href="/static/css/pygments.css" />
  <link rel="alternate" type="application/rss+xml" title="RSS" href="http://blog.zorro.im/rss.xml" />
  <link rel="icon" type="image/png" href="/static/img/favicon.png">
</head>
<body>
    <div class="page-wrap">
        <section class="main-header regular">
            <div class="vertical-container">
                <div class="wrapper clearfix">
                    <header>
                        <a href="/">
                            <h1 id="main-title">穷折腾</h1>
                            <h2 id="main-subtitle">zqqf16 的个人博客</h2>
                        </a>
                    </header>
                    <nav id="main-nav" role="navigation">
                        <a href="/" class="selected">主页</a>
                        <a href="/posts/about.html" class="">关于</a>
                        <a href="https://github.com/zqqf16">Github</a>
                    </nav>
                </div>
            </div>
        </section>
        <section class="main-content">
            
<article class="main-content">
    <div class="wrapper">
        <header class="section-header">
            <h1 class="section-title">理解 Git 的暂存区</h1>
            <span class="section-subtitle"><time datetime="2013-06-05" pubdate="">2013-06-05</time></span>
        </header>
        <section class="post-content">
        	<blockquote>
<p>虽然用了几个月的 Git，但是今天才了解了“Index（暂存区域）”这个东西，惭愧啊。。。</p>
</blockquote>
<p>在公司用的是 CVS，因此用<code>git add</code>的时候就以为和<code>cvs add</code>的作用是一样的，把新文件加到代码库。后来学了一招<code>git commit -a</code>，还以为-a就是--all的意思。稀里糊涂地用到现在。。。</p>
<p>Git 中的暂存区类似于任务列表，当对工作区的文件做了修改之后，执行</p>
<div class="codehilite"><pre>git add filename
</pre></div>


<p>就会把修改的文件加到这个任务列表中，当执行</p>
<div class="codehilite"><pre>git commit
</pre></div>


<p>的时候，暂存区中的改动就会提交到版本库中，而在“git add”之后所做的改动就不会被提交。</p>
<p>比如，我现在 Readme.md 文件中增加了一行，然后执行<code>git add Readme.md</code>。然后再加一行，执行<code>git commit</code>，这样我提交的只是第一次修改的内容。</p>
<p>命令</p>
<div class="codehilite"><pre>git checkout filename
</pre></div>


<p>是用暂存区中的文件来替换工作区中的文件。</p>
<p>命令</p>
<div class="codehilite"><pre>git checkout HEAD
</pre></div>


<p>是用HEAD指向的版本库中的文件来替换暂存区和工作区的文件。</p>
<p>好了，先这么多了。通过这件事总结出一个道理：经验有时候会形成思维定势。</p>
        </section>
        <div class="post-nav">
    		<!-- Duoshuo Comment BEGIN -->
<div class="ds-thread"></div>
<script type="text/javascript">
	var duoshuoQuery = {short_name:"zqqf16"};
	(function() {
		var ds = document.createElement('script');
		ds.type = 'text/javascript';ds.async = true;
		ds.src = 'http://static.duoshuo.com/embed.js';
		ds.charset = 'UTF-8';
		(document.getElementsByTagName('head')[0]
		|| document.getElementsByTagName('body')[0]).appendChild(ds);
	})();
</script>
<!-- Duoshuo Comment END -->

    	</div>
    </div>

</article>

        </section>
    </div>
    <footer class="main-footer">
        <div class="vertical-container">
            <div class="wrapper">
                <p class="copy">&copy; zqqf16</p>
            </div>
        </div>
    </footer>
    <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
      ga('create', 'UA-41282906-2', 'auto');
      ga('require', 'displayfeatures');
      ga('send', 'pageview');
    </script>
</body>
</html>
